Skip to main content

06-12 ChartSortSeriesByNamemd

Chart_SortSeriesByName.md​

Public Sub Chart_SortSeriesByName()
'this will sort series by names
Dim targetObject As ChartObject
For Each targetObject In Chart_GetObjectsFromObject(Selection)

'uses a simple bubble sort but it works... shouldn't have 1000 series anyways
Dim firstChartIndex As Long
Dim secondChartIndex As Long
For firstChartIndex = 1 To targetObject.Chart.SeriesCollection.Count
For secondChartIndex = (firstChartIndex + 1) To targetObject.Chart.SeriesCollection.Count

Dim butlSeries1 As New bUTLChartSeries
Dim butlSeries2 As New bUTLChartSeries

butlSeries1.UpdateFromChartSeries targetObject.Chart.SeriesCollection(firstChartIndex)
butlSeries2.UpdateFromChartSeries targetObject.Chart.SeriesCollection(secondChartIndex)

If butlSeries1.name.Value > butlSeries2.name.Value Then
Dim indexSeriesSwap As Long
indexSeriesSwap = butlSeries2.SeriesNumber
butlSeries2.SeriesNumber = butlSeries1.SeriesNumber
butlSeries1.SeriesNumber = indexSeriesSwap
butlSeries2.UpdateSeriesWithNewValues
butlSeries1.UpdateSeriesWithNewValues
End If

Next secondChartIndex
Next firstChartIndex
Next targetObject
End Sub